apiVersion: apiextensions.k8s.io/v1
kind: CustomResourceDefinition
metadata:
  name: instances.deckhouse.io
  labels:
    heritage: deckhouse
    module: node-manager
spec:
  group: deckhouse.io
  scope: Cluster
  names:
    plural: instanceinstances
    singular: instance
    kind: Instance
  preserveUnknownFields: false
  versions:
    - name: v1alpha1
      served: true
      storage: true
      subresources:
        status: {}
      schema:
        openAPIV3Schema:
          description: |
            Описывает независимый от реализации объект эфемерной машины.
          properties:
            status:
              properties:
                nodeRef:
                  description: Ссылка на объект узла kubernetes.
                  properties:
                    name:
                      description: Имя узла
                classReference:
                  description: |
                    Ссылка на объект `InstanceClass`. Уникален для каждого модуля `cloud-provider-*`.
                  properties:
                    kind:
                      description: |
                        Тип объекта (например, `OpenStackInstanceClass`). Тип объекта указан в документации соответствующего модуля облачного провайдера.
                    name:
                      description: |
                        Имя нужного `InstanceClass`-объекта (например, `finland-medium`).
                machineRef:
                  description: Ссылка на объект узла облачного провайдера.
                  properties:
                    apiVersion:
                      description: Используемая версия API Kubernetes.
                    kind:
                      description: Тип объекта.
                    name:
                      description: Имя объекта.
                    namespace:
                      description: Пространство имен, в котором находится объект.
                currentStatus:
                  description: Текущий статус объекта.
                  properties:
                    lastUpdateTime:
                      description: Время последнего обновления ствтуса.
                    phase:
                      description: Метка состояния машин в текущий момент времени.
                lastOperation:
                  description: Последняя выполненная операция.
                  properties:
                    description:
                      description: Описание текущей операции.
                    lastUpdateTime:
                      description: Время последней операции.
                    state:
                      description: Состояние операции.
                    type:
                      description: Тип операции.
                  type: object
                bootstrapStatus:
                  type: object
                  description: Информация о процессе начальной настройки узла.
                  properties:
                    logsEndpoint:
                      type: string
                      description: IP-адрес для получения логов начальной настройки узла.
                    description:
                      type: string
                      description: Описание процесса получения логов начальной настройки узла.
      additionalPrinterColumns:
        - name: Status
          type: string
          description: Текущий статус.
          jsonPath: .status.currentStatus.phase
        - name: Age
          type: date
          description: Время создания объекта.
          jsonPath: .metadata.creationTimestamp
